package com.tuanzi.loan.workflow.service.impl;

import java.util.List;

import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.tuanzi.loan.workflow.entity.RejectConfig;
import com.tuanzi.loan.workflow.repository.RejectConfigRepository;
import com.tuanzi.loan.workflow.service.RejectConfigService;

/**
 * @author Ray
 * @date 2018/01/16
 */
@Service
@Transactional
public class RejectConfigServiceImpl implements RejectConfigService {

	@Autowired
	private RejectConfigRepository rejectConfigRepository;
	// @Resource
	// @Override
	// public void setMapper(Mapper<RejectConfig> mapper) {
	// super.mapper = mapper;
	// }
	//
	// @Override
	// public BaseResponse<Void>
	// saveOrUpdateRejectConfig(RejectConfigSaveOrUpdateRequest request) {
	//
	// RejectConfig record = new RejectConfig();
	// record.setProcDefId(request.getProcDefId());
	// record.setTaskDefKey(request.getTaskDefKey());
	//
	// RejectConfig rejectConfig = mapper.selectOne(record);
	// if (null == rejectConfig) {
	// record.setBackTaskDefKey(request.getBackTaskDefKey());
	// mapper.insert(record);
	// } else {
	// record.setId(rejectConfig.getId());
	// record.setBackTaskDefKey(request.getBackTaskDefKey());
	// mapper.updateByPrimaryKey(record);
	// }
	//
	// return new BaseResponse<>(new BaseResult<>(true,
	// ResponseScript.UPDATE_SUCCESS));
	// }

	@Override
	public void synchronizeRejectConfig(String oldProcDefId, String newProcDefId) {

		List<RejectConfig> oldRejectConfigs = rejectConfigRepository.findAllByProcDefId(oldProcDefId);

		for (RejectConfig oldRejectConfig : oldRejectConfigs) {
			RejectConfig newRejectConfig = new RejectConfig();
			BeanUtils.copyProperties(oldRejectConfig, newRejectConfig, new String[] { "id" });
			newRejectConfig.setProcDefId(newProcDefId);
			rejectConfigRepository.save(newRejectConfig);
		}

	}

	// @Override
	// public BaseResponse<String> getRejectConfig(RejectConfigGetRequest request) {
	// BaseResponse<String> response = new BaseResponse<>();
	//
	// RejectConfig record = new RejectConfig();
	// record.setProcDefId(request.getProcDefId());
	// record.setTaskDefKey(request.getTaskDefKey());
	//
	// RejectConfig rejectConfig = mapper.selectOne(record);
	// if (null == rejectConfig) {
	// response.setResult(new BaseResult<>(false, ResponseScript.GET_OBJ_FAIL));
	// } else {
	// response.setResult(new BaseResult<>(rejectConfig.getBackTaskDefKey()));
	// }
	// return response;
	// }
	//
	@Override
	public void deleteByProcDefId(String procDefId) {
		rejectConfigRepository.deleteInBatch(rejectConfigRepository.findAllByProcDefId(procDefId));
	}
}
